home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 17 / CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso / CUCD / Graphics / RTGmaster / devdocs / c2p.ad < prev    next >
Text File  |  1996-10-14  |  25KB  |  654 lines

  1. Sorry, that the docs i sent were a bit ... buggy... i now reworked
  2. the whole thing completely... but still "Beta, to be commented
  3. from people who know about what they are talking (c2p authors...)"
  4. If it changes, the final version will be somewhen available together
  5. with rtgmaster.library...
  6.  
  7. The RtgMaster c2p Standard V 1.8
  8. ================================
  9.  
  10. 1. What is it/What is rtgmaster ?
  11. 2. The Structure of a RtgMaster c2p File
  12. 3. The Functions and its specification
  13. 4. The specification of the data
  14. 5. How will this be used in an application ?
  15. 6. Error Handling
  16. 7. Includes
  17. 8. A word from the Authors
  18. 9. History
  19.  
  20. ---------------------------------------------------------------------------
  21.  
  22. 1. What is it/What is rtgmaster ?
  23. =================================
  24.  
  25. rtgmaster.library is a soon to be released ASM written Library for
  26. Graphicsboard AND ECS/AGA compatibility in games and demos. It is
  27. NOT a WB Emulation, but contrary to some WB Emulations it is done
  28. in a way that make that things, that demo/game coders need, EASY
  29. TO DO.
  30.  
  31. Among its features, rtgmaster.library (a Beta version is available
  32. from me, MagicSN@birdland.es.bawue.de), supports a standard for
  33. c2p functions. This will used with the rtgmaster call CallRtgC2P.
  34. CallRtgC2P performs a simple "CopyPixelArray" style function for
  35. Graphics Boards (but does not use the OS, instead it directly
  36. accesses the Video Memory, using longword access where possible),
  37. and performs c2p for ECS/AGA. The c2p is choosable from a file
  38. and the c2p function will be loaded during opening the screen.
  39. This file describes how you can change your c2p algorithm so that
  40. it is usable with rtgmaster.library (you can choose the c2p using
  41. the Screenmode Requester of rtgmaster.library).
  42.  
  43. I want to note, that anybody who has converted his c2p functions
  44. to the rtgmaster standard, should send them to me, so that they
  45. can be included to the rtgmaster package as soon as it is
  46. released.
  47.  
  48. And, by the way... forget about that earlier "rtgmaster c2p standard"
  49. document... that was only a first try :) (Bad documentation,
  50. bad functionality, bad structure...) This here is the real thing.
  51.  
  52. ----------------------------------------------------------------------------
  53.  
  54. 2. The Structure of a Rtgmaster c2p File
  55. ========================================
  56.  
  57. Primarily this is a file that will be loaded to the memory using dos.library
  58. call LoadSeg(). After being loaded in, it looks somewhat like :
  59.  
  60.         moveq   #0,d0
  61.         rts
  62. .s      dc.l    "c2p!"
  63.         dc.l    .s
  64.         dc.l    1               ; Versionnumber
  65.         dc.l    Structure       ; Pointer to your data structure
  66.  
  67. Structure is of Type c2p_Info.
  68.  
  69. STRUCTURE c2p_Info,0
  70.      WORD    CI_ColorDepth           ;CI_256, CI_128, CI_64, CI_EHB, CI_32..
  71.      WORD    CI_CPU                  ;CI_68060, CI_68040, CI_68030....
  72.      WORD    CI_Needs                ;CI_Aikiko, CI_MMU, CI_FPU...
  73.      BYTE    CI_Dirty                ;TRUE/FALSE
  74.      BYTE    CI_Hack                 ;TRUE/FALSE
  75.      ULONG   CI_PixelSize            ;c2p_1x1...
  76.      WORD    CI_WidthAlign           ;Width has to be divisible by <number>
  77.      WORD    CI_HeightAlign          ;Height has to be divisible by <number>
  78.      WORD    CI_Misc                 ;Different stuff...
  79.      ULONG   CI_AmiCompatible        ;Is this compatible to RtgScreenAMI ?
  80.      APTR    CI_Description          ;Pointer to a string
  81.      APTR    CI_Initialization       ;Pointer to Initialization code
  82.      APTR    CI_Expunge              ;Pointer to Expunge code
  83.      APTR    CI_Normal_c2p           ;Pointer to c2p code
  84.      APTR    CI_Normal_c2p_InterL    ;Pointer to Interleaved c2p
  85.      APTR    CI_Scrambled_c2p        ;Pointer to Scrambled c2p
  86.      APTR    CI_Scrambled_c2p_InterL ;Pointer to Scrambled Interleaved c2p
  87.      BYTE    CI_Asynchrone           ;TRUE/FALSE
  88.      LABEL   CI_SIZEOF
  89.  
  90.  
  91. In the following chapters, it will be discussed how all those entries look
  92. like, how they will be used by rtgmaster.library, how they have to be coded,
  93. what error messages have to supported and related issues.
  94.  
  95. ----------------------------------------------------------------------------
  96.  
  97. 3. The functions and its specification
  98. ======================================
  99.  
  100. To support rtgmaster c2p, you will need some or more of the functions :
  101.  
  102. * CI_Initialization
  103. * CI_Expunge
  104. * CI_Normal_c2p
  105. * CI_Normal_c2p_InterL
  106. * CI_Scrambled_c2p
  107. * CI_Scrambled_c2p_InterL
  108.  
  109. CI_Initialization
  110. -----------------
  111.  
  112. Some c2p algorithms need an initialization part, to allocate extra Buffers,
  113. to calculate initialization conditions and similar things. This will be the
  114. place where to do this.
  115.  
  116. You will get a parameter in a0, when this function is called. This parameter
  117. is a pointer to the RtgScreenAMI structure of the Screen, to which the c2p algorithm is
  118. to attach. There can only be one c2p algorithm installed in a system, but
  119. it can be changed as soon as a Screenmode-Requester of rtgmaster.library
  120. is opened (But the c2p of an already running program won't change).
  121.  
  122. The CI_Initialization code will be called from the OpenRtgScreen function
  123. of rtgAMI.library, the rtgmaster sublibrary for ECS/AGA.
  124.  
  125. This c2p format only supports Planar rtgmaster Sublibraries whose RtgScreen
  126. structure is compatible to RtgScreenAMI, but anyways, there do not exist
  127. Planar sublibraries for other hardware. Coders of guessed future Planar
  128. Graphics Sublibraries should be sure, that at least the entries
  129.  
  130. * rsAMI_ScreenHandle
  131. * rsAMI_PlaneSize
  132. * rsAMI_Bitmap1
  133.  
  134. will be at the same place for their sublibraries, if they want to use
  135. existing c2p code. If that is not possible, they should check in their
  136. sublibrary's CallRtgC2P code for CI_AmiCompatible (more information in
  137. the chapter about the Rtgmaster c2p data structures).
  138.  
  139. You might save any stuff that is allocated during the initialization part
  140. in rs_c2pdata(a0), where a0 is the before mentioned pointer to the given
  141. RtgScreenAMI structure.
  142.  
  143. If your c2p code does not need any initialization, simply give 0 as the
  144. pointer to the initialization code.
  145.  
  146. Parameters :
  147.  
  148. a0.l = Pointer to RtgScreenAMI
  149.  
  150. Output :
  151.  
  152. d0.l = 0, if worked, else an errorcode (see below)
  153.  
  154. CI_Expunge
  155. ----------
  156.  
  157. This function returns any system resources and memory to where they belong.
  158. It is called during CloseRtgScreen of rtgAMI.library. You will get a pointer
  159. to the RtgScreenAMI structure of the Screen, to which the c2p was attached,
  160. in a0.
  161.  
  162. Parameters :
  163.  
  164. a0.l = Pointer to RtgScreenAMI
  165.  
  166. Output :
  167.  
  168. d0.l = 0, if worked, else an errorcode
  169.  
  170. CI_Normal_c2p
  171. -------------
  172.  
  173. This is the c2p main function for non-interleaved screens with contintiguous
  174. Bitmaps. As this c2p code supports rtgmaster.library, it might use up to three
  175. buffers, but that might not bother you, you will already get the correct
  176. Bitplane 0 Base addresses by CallRtgC2P.
  177.  
  178. CI_Normal_c2p_InterL works much the same way, only that it is intended for
  179. interleaved Screens. It is possible to include functions for all four types
  180. of c2p functions to one c2p file. CallRtgC2P will call the correct one.
  181.  
  182. Parameters :
  183.  
  184. a0.l = Pointer to the Chunky Data
  185. a1.l = Pointer to Bitplane 0
  186. a2.l = Pointer to a Byte containing the "Dirty" Flag (see below)
  187. a3.l = Pointer to the RtgScreenAMI structure, to which the c2p should be attached
  188. a4.l = Pointer to a Rectangle, like defined in include:graphics/gfx.i, which
  189.        specifies, which region of the display the c2p should handle, or 0, if
  190.        fullscreen c2p was intended.
  191. d0.l = c2p Modus (see below)
  192. d1.l = Planesize : (width*height)/8
  193. d2.l = An exec signal, for asynchrone c2p
  194.  
  195. Now, what should such a function do ? At first it should do error-handling,
  196. like described in a later chapter, after that it should perform c2p, and as
  197. soon as it is finished it should signal the waiting task, that it is finished.
  198. This way, you are able to implement asynchrone c2p. Even synchrone c2p algorithms
  199. have to signal the task, else it waits forever.
  200.  
  201. Output :
  202.  
  203. d0.l = 0, if everything worked, else error-code (see below)
  204.  
  205. CI_Scrambled_c2p
  206. ----------------
  207.  
  208. This is the c2p main function for non-interleaved screens with Bitmaps, that
  209. use "scrambled" c2p. These are algorithms, where the bitplanes are not in the
  210. normally assumed order. They should still be contiguous, though. To set a standard,
  211. I have to admit, i do not know much about scrambled c2p, only that Gloom Deluxe
  212. uses it, and therefor it is specified, that rtgmaster scrambled c2p has to use
  213. the same Bitplane order as this is done for Gloom Deluxe c2p. For more information
  214. about Gloom Deluxe c2p, get GloomC2P10.lha from Aminet.
  215.  
  216. It is strongly discouraged to write scrambled-only c2p, as then the coder using
  217. the c2p can't use the same chunky buffer for Graphics Boards and AGA, as CallRtgC2P
  218. does a fast "Write from Fastram-Buffer to Video-RAM" instead of c2p-ing. The user
  219. will be told, that this c2p won't work with all programs, if he chooses a scrambled
  220. chunky c2p, and he will be asked, if he wants to select the Scrambled or the Non-scrambled
  221. code, if both are available for a Rtgmaster c2p File. Scrambled c2p sometimes might
  222. be faster than non-scrambled c2p.
  223.  
  224. The Parameters and output are the same as for non-scrambled c2p, and there, too, exist
  225. too types of c2p, for non-interleaved and for interleaved Bitmaps.
  226.  
  227. ----------------------------------------------------------------------------------------------
  228.  
  229. 4. The specification of the data
  230. ================================
  231.  
  232. STRUCTURE c2p_Info,0
  233.      WORD    CI_ColorDepth           ;CI_256, CI_128, CI_64, CI_EHB, CI_32.. normally *ALL OF THEM* (see below)
  234.      WORD    CI_CPU                  ;CI_68060, CI_68040, CI_68030....
  235.      WORD    CI_Needs                ;CI_Aikiko, CI_MMU, CI_FPU...
  236.      BYTE    CI_Dirty                ;TRUE/FALSE
  237.      BYTE    CI_Hack                 ;TRUE/FALSE
  238.      ULONG   CI_PixelSize            ;c2p_1x1,...
  239.      WORD    CI_WidthAlign           ;Width has to be divisible by <number>
  240.      WORD    CI_HeightAlign          ;Height has to be divisible by <number>
  241.      WORD    CI_Misc                 ;Different stuff...
  242.      ULONG   CI_AmiCompatible        ;Is this compatible to RtgScreenAMI ?
  243.      APTR    CI_Description          ;Pointer to a string
  244.      APTR    CI_Initialization       ;Pointer to Initialization code
  245.      APTR    CI_Expunge              ;Pointer to Expunge code
  246.      APTR    CI_Normal_c2p           ;Pointer to c2p code
  247.      APTR    CI_Normal_c2p_InterL    ;Pointer to Interleaved c2p
  248.      APTR    CI_Scrambled_c2p        ;Pointer to Scrambled c2p
  249.      APTR    CI_Scrambled_c2p_InterL ;Pointer to Scrambled Interleaved c2p
  250.      BYTE    CI_Asynchrone           ;TRUE/FALSE
  251.      LABEL   CI_SIZEOF
  252.  
  253. * CI_Colordepth : Contains the Colordepths supported by this c2p algorithm.
  254.  
  255. CI_256 : AGA 256 colors
  256. CI_128 : AGA 128 colors
  257. CI_64  : AGA 64  colors
  258. CI_EHB : ECS 64  colors (EHB)
  259. CI_32  : ECS 32  colors
  260. CI_16  : ECS 16  colors
  261. CI_8   : ECS 8   colors
  262. CI_4   : ECS 4   colors
  263. CI_2   : ECS 2   colors
  264.  
  265. There might be more available bits, if future Amigas support more Planar
  266. modes. Therefor i choose a WORD for this structure.
  267.  
  268. If a c2p is run and a screen with the wrong colour depth is opened, the
  269. c2p operation fails. (see below)
  270.  
  271. Normally you should set ALL CI_Colordepth bits
  272. (CI_256+CI_128+CI_64+CI_EHB+CI_32+CI_16+CI_8+CI_4+CI_2),
  273. as rtgmaster.library supports ALL Depths automatically,
  274. if you do not use special features of the AGA Chipset,
  275. that are not available on ECS (for example long blits...).
  276. If your c2p only runs on 8 Bit, that's not a problem...
  277. rtgmaster.library provides some dummy bitplanes for
  278. you, then...
  279.  
  280. * CI_CPU : Contains information about the supported CPU.
  281.  
  282. CI_68060 : Runs on 68060.
  283. CI_68040 : Runs on 68040.
  284. CI_68030 : Runs on 68030.
  285. CI_68020 : Runs on 68020.
  286.  
  287. These bits are set, if it runs, cleared, if not. As rtgmaster.library
  288. needs 68020 at least, no Bits for 68000/68010.
  289.  
  290. CI_68060D : Don't know, if it runs on 68060.
  291. CI_68040D : Don't know, if it runs on 68040.
  292. CI_68030D : Don't know, if it runs on 68030.
  293. CI_68020D : Don't know, if it runs on 68020.
  294.  
  295. This might be expanded in the future, as soon as Power PC Amigas
  296. with 680x0 emulations will appear.
  297.  
  298. * CI_Needs : Some c2p needs special hardware to run.
  299.  
  300. CI_68060N : 68060 only code.
  301. CI_68040N : Needs 68040 at least.
  302. CI_68030N : Needs 68030 at least.
  303. CI_Aikiko : Needs Aikiko.
  304. CI_MMU    : Needs an MMU.
  305. CI_FPU    : Needs an FPU.
  306. CI_FAST   : Needs Fastram.
  307. CI_2MB    : Needs 1 MB Chip.
  308.  
  309. This might be expanded in the future.
  310.  
  311. Notice, that the hardware won't be checked for the correct cpu, but
  312. the information will be given to the user. Maybe it will be checked
  313. when the user selects the c2p for his system in a future version of
  314. rtgmaster.library. (see below)
  315.  
  316. * CI_PixelSize : Which Pixelsizes are supported by the c2p.
  317.  
  318. c2p_1x1
  319. c2p_1x2
  320. c2p_2x1
  321. c2p_2x2
  322. c2p_2x4
  323. c2p_4x2
  324. c2p_4x4
  325.  
  326. are the types for which the "Dirty" Flag will be ignored. The Dirty
  327. Flag specifies (if set), that not all CI_WidthAlign Pixels have to be
  328. processed, if not needed.
  329.  
  330. c2p_1x1D
  331. c2p_1x2D
  332. c2p_2x1D
  333. c2p_2x2D
  334. c2p_2x4D
  335. c2p_4x2D
  336. c2p_4x4D
  337.  
  338. are the types that try to use the "Dirty" Flag. It could still be set to
  339. 0, though.
  340.  
  341. c2p_Best and c2p_BestD try to use the highest resolution mode.
  342. c2p_Fastest and c2p_FastestD try to use the fastest ones.
  343. c2p_Selected and c2p_SelectedD try to use the one selected by the user
  344. as standard c2p. You won't have to specify the Best,
  345. Fastest and Selected Flags, as they will be supported
  346. for ALL c2p algorithms.
  347.  
  348. You will have to check yourselves, if the ordered mode is existing in
  349. this c2p (see below).
  350.  
  351. * CI_Dirty : Specifies if this c2p supports a dirty flag. It can be
  352.   true (1) or false (0).
  353.  
  354. * CI_Hack : Specifies, if this c2p uses some ugly hardware hacks, that
  355.   might not run on Intuition Screens. It then only will be used with
  356.   a still not existing hardware-banging RtgScreenAMI compatible
  357.   rtgmaster sublibrary. Only specify this, if it REALLY does not run
  358.   with Intuition Screens. Planar sublibraries that are for hardware
  359.   other than ECS/AGA, will fail, if trying to use such c2p code.
  360.   Can be true (1) or false (0).
  361.  
  362. * CI_Asynchrone : Specifies, if the c2p code is asynchrone (1) or
  363.   synchrone (0).
  364.  
  365. * CI_WidthAlign : Specifies, if the c2p code needs a screen whose width
  366.   is divisible by a certain number. This value contains this number, or
  367.   0, if this is not needed.
  368.  
  369. * CI_HeightAlign : The same for the height.
  370.  
  371. * CI_Misc :
  372.  
  373.   CI_Smaller : If this bit is set, the c2p algorithm supports c2p-ing
  374.   rectangles that are smaller than Full-Screen.
  375.  
  376.   CI_Fixed : If this is set, the c2p algorithm ONLY works together
  377.   with Screens of the resolution specified in CI_WidthAlign/CI_HeightAlign.
  378.   NOTE : FIXED c2p algorithms are NOT ALLOWED to need a Width/Height
  379.   Align !!! (Makes no sense, anyways, if they are fixed :) )
  380.  
  381.   CI_Destruct : c2p is destructive c2p. Most c2p are non-destructive (they do not
  382.                 change the chunky buffer in displaying it)
  383.  
  384.   CI_Misc might be expanded in the future.
  385.  
  386. * CI_AmiCompatible : Contains 'AMI ', if this c2p code is compatible
  387.   with RtgScreenAMI. If not, it contains the code of the sublibrary
  388.   with that it is compatible (three letters + blank or four letters).
  389.  
  390. * CI_Description : Points to a string discribing this c2p algorithm.
  391.   Up to 255 letters, 0-terminated.
  392.  
  393. ----------------------------------------------------------------------------------------------
  394.  
  395. 5. How will this be used in an application ?
  396. ============================================
  397.  
  398. Normally this c2p will be called using rtgmaster.library function CallRtgC2P.
  399. I am including the Autodocs for CallRtgC2P at the end of this chapter. People
  400. who are interested in rtgmaster.library, should mail me at MagicSN@birdland.es.bawue.de
  401.  
  402. The c2p code is integrated the following way :
  403.  
  404. 1. The user selects a c2p code to be used for his systemusing the rtgmaster
  405.    Screenmode Requester. The Path of this file will be stored in envarc:rtgmaster/c2p.
  406.    Then he chooses a default mode, that will be stored in envarc:rtgmaster/c2pcurr.
  407. 2. As soon as an application opens a RtgScreen, the c2p algorithm is loaded to memory,
  408.    using LoadSeg() of dos.library, and the default c2p is stored in the RtgScreen
  409.    structure. After that, a possibly existing initilaization function of the c2p will
  410.    be called and the data it returns will be saved in the RtgScreen structure. Some
  411.    error checks will be done (see below)
  412. 3. As you call CallRtgC2P, the c2p will be performed, with some error checks (see below).
  413.    If it returns 0, everything worked, else an error happened. Some of the error checks
  414.    will be done in CallRtgC2P, some will have to be done in your c2p code (see below).
  415. 4. The application waits with exec.library Wait() for the c2p to be finished, even if
  416.    it is synchrone c2p. The application should not leave out this Wait().
  417. 5. If CloseRtgScreen is called, the Expunge function will be called (if it exists),
  418.    and after that, UnloadSeg() of dos.library will be called.
  419.  
  420. DO NOT PROVIDE BOTH scrambled and not-scrambled functions... split the thing
  421. to two c2p files... rtgmaster.library can't handle this, else...
  422. it is possible to provide interleaved and not interleaved stuff in one
  423. file, though...
  424.  
  425. Certainly, Rtgmaster c2p is usable without having to use rtgmaster.library, too,
  426. but this is recommended. Both rtgmaster.library and the rtgmaster c2p format
  427. are freeware. Up to what c2p functions are, copyright is up to those who wrote
  428. the functions. But most of them should probably be freeware, too.
  429.  
  430. ----------------------------------------------------------------------------------------------
  431.  
  432. 6. Error Handling
  433. =================
  434.  
  435. The Rtgmaster c2p format knows the following error messages. They will be
  436. returned by CallRtgC2P.
  437.  
  438. I.    c2p_err_Wrong_C2P
  439. II.   c2p_err_Wrong_Depth
  440. III.  c2p_warn_Wrong_Pixelmode
  441. IV.   c2p_err_Wrong_Windowsize
  442. V.    c2p_warn_divisible
  443. VI.   c2p_err_hardware
  444. VII.  c2p_err_memory
  445. VIII. c2p_err_internal
  446. IX.   c2p_warn_internal
  447.  
  448.  
  449.  
  450.  
  451.  
  452. I.        will come up, if you, for example, try to do an interleaved-only c2p
  453.           with a interleaved Bitmap. This will be checked by CallRtgC2P itself.
  454.  
  455. II.       will come up, if the Display has a depth, that is not supported
  456.           by the c2p code. This will be checked by CallRtgC2P itself.
  457.  
  458. III.      will come up, if you tried to use a Pixelmode, that is not available
  459.           for this c2p. It is only a warn, and your c2p code should use a mode, that
  460.           finds to be a appropriate replacement. It will still do c2p, but it
  461.           should return this warning. The c2p code should check for this, as it
  462.           knows its possibilities and features best.
  463.  
  464. IV.       will come up, if you tried to do a "smaller than Fullscreen" c2p with
  465.           a c2p that only can do Fullscreen c2p. This will be checked by CallRtgC2P
  466.           itself. This will be done first, so a
  467.  
  468.           1. Try to do "smaller than Fullscreen"
  469.           2. Did not work => Recalculate and do Fullscreen c2p
  470.  
  471.           should be optimal.
  472.  
  473. V.        will come up, if you tried to use illegal widths/heights for this c2p.
  474.           You might configure the Rtgmaster Screenmode Requester c2p choosing
  475.           utility to filter out such modes, though, so this warn will only appear,
  476.           if you do not filter out. It will then try to do the c2p, anyways and
  477.           wish you good luck :)
  478.  
  479. VI.       will be given from CallRtgC2P, if you tried to do a c2p that is not
  480.           compatible with the given Display hardware. Processor hardware won't
  481.           be checked, but this might be implemented in the Rtgmaster Screenmode
  482.           Requester c2p choosing utility later.
  483.  
  484. VII.      is the error that you should return, if your initialization/expunge code
  485.           fails, due to the system being low on memory.
  486.  
  487. VIII./IX. is the error you should return, if something happens that is nothing
  488.           of the other stuff. It exists as warn and as error.
  489.  
  490. ---------------------------------------------------------------------------------------------
  491.  
  492. 7. Includes
  493. ===========
  494.  
  495. You probably should get :
  496.  
  497. - Standard AmigaDOS Includes for OS2.0 or higher
  498. - rtgmaster.library includes (available from me, MagicSN@birdland.es.bawue.de)
  499.  
  500. I am listing the RtgScreenAMI structure out of rtgAMI.i here for better understanding
  501. (note : in the docs of rtgmaster.library it is stated, that this structure would be
  502. private to rtgmaster.library. It is private to rtgmaster.library *and* rtgmaster c2p
  503. now...)
  504.  
  505. STRUCTURE RtgScreenAMI,0
  506.   STRUCT rsAMI_Header,rs_SIZEOF
  507.   UWORD rsAMI_Locks
  508.   ALIGNLONG
  509.   ULONG rsAMI_ScreenHandle
  510.   ULONG rsAMI_PlaneSize
  511.   ULONG rsAMI_DispBuf      ;Buffer currently displayed
  512.   ULONG rsAMI_ChipMem1
  513.   ULONG rsAMI_ChipMem2
  514.   ULONG rsAMI_ChipMem3
  515.   STRUCT rsAMI_Bitmap1,40
  516.   STRUCT rsAMI_Bitmap2,40
  517.   STRUCT rsAMI_Bitmap3,40
  518.   ULONG  rsAMI_Flags
  519.   STRUCT rsAMI_MyRect,8
  520.   STRUCT rsAMI_Place,36
  521.   LABEL rsAMI_SIZEOF
  522.  
  523. Now i am listing include:rtgmaster/rtgc2p.i :
  524.  
  525. STRUCTURE c2p_Info,0
  526.      WORD    CI_ColorDepth           ;CI_256, CI_128, CI_64, CI_EHB, CI_32..
  527.      WORD    CI_CPU                  ;CI_68060, CI_68040, CI_68030....
  528.      WORD    CI_Needs                ;CI_Aikiko, CI_MMU, CI_FPU...
  529.      BYTE    CI_Dirty                ;TRUE/FALSE
  530.      BYTE    CI_Hack                 ;TRUE/FALSE
  531.      ULONG   CI_PixelSize            ;c2p_1x1,...
  532.      WORD    CI_WidthAlign           ;Width has to be divisible by <number>
  533.      WORD    CI_HeightAlign          ;Height has to be divisible by <number>
  534.      WORD    CI_Misc                 ;Different stuff...
  535.      ULONG   CI_AmiCompatible        ;Is this compatible to RtgScreenAMI ?
  536.      APTR    CI_Description          ;Pointer to a string
  537.      APTR    CI_Initialization       ;Pointer to Initialization code
  538.      APTR    CI_Expunge              ;Pointer to Expunge code
  539.      APTR    CI_Normal_c2p           ;Pointer to c2p code
  540.      APTR    CI_Normal_c2p_InterL    ;Pointer to Interleaved c2p
  541.      APTR    CI_Scrambled_c2p        ;Pointer to Scrambled c2p
  542.      APTR    CI_Scrambled_c2p_InterL ;Pointer to Scrambled Interleaved c2p
  543.      BYTE    CI_Asynchrone           ;TRUE/FALSE
  544.      LABEL   CI_SIZEOF
  545.  
  546. ; CI_ColorDepth
  547.  
  548. CI_256 EQU 256
  549. CI_128 EQU 128
  550. CI_64  EQU 64
  551. CI_EHB EQU 32
  552. CI_32  EQU 16
  553. CI_16  EQU 8
  554. CI_8   EQU 4
  555. CI_4   EQU 2
  556. CI_2   EQU 1
  557.  
  558. ; CI_CPU
  559.  
  560. CI_68060 EQU 1
  561. CI_68040 EQU 2
  562. CI_68030 EQU 4
  563. CI_68020 EQU 8
  564. CI_68060D EQU 16
  565. CI_68040D EQU 32
  566. CI_68030D EQU 64
  567. CI_68020D EQU 128
  568.  
  569. ; CI_Needs
  570.  
  571. CI_68060N EQU 1
  572. CI_68040N EQU 2
  573. CI_68030N EQU 4
  574. CI_Aikiko EQU 8
  575. CI_MMU    EQU 16
  576. CI_FPU    EQU 32
  577. CI_FAST   EQU 64
  578. CI_2MB    EQU 128
  579.  
  580. ; CI_Misc
  581.  
  582. CI_Smaller EQU 1
  583. CI_Fixed   EQU 2
  584. CI_Destruct EQU 4
  585.  
  586. ; CI_PixelSize
  587.  
  588. c2p_1x1 EQU 1
  589. c2p_1x2 EQU 2
  590. c2p_2x1 EQU 4
  591. c2p_2x2 EQU 8
  592. c2p_4x2 EQU 16
  593. c2p_2x4 EQU 32
  594. c2p_4x4 EQU 64
  595. c2p_Best EQU 128
  596. c2p_Fastest EQU 256
  597. c2p_Selected EQU 512
  598. c2p_1x1D EQU 1024
  599. c2p_1x2D EQU 2048
  600. c2p_2x1D EQU 4096
  601. c2p_2x2D EQU 8192
  602. c2p_4x2D EQU 16384
  603. c2p_2x4D EQU 32768
  604. c2p_4x4D EQU 65536
  605. c2p_BestD EQU 131072
  606. c2p_FastestD EQU 262144
  607. c2p_SelectedD EQU 524288
  608.  
  609. ----------------------------------------------------------------------------------------------
  610.  
  611. 8. A word from the Authors
  612. ==========================
  613.  
  614. This rtgmaster c2p format was mainly done by me, Steffen Haeuser,
  615. with the help of Ludvig Pedersen and Peter McGavin. rtgmaster.library
  616. was/is done by me, John Hendrikx, Wolfram Schenk and Hans-Joerg Frieden.
  617. CallRtgC2P is supported by rtgmaster sublibraries starting with version
  618. number 2.0. Up to now no c2p functions are finished, so send me some :)
  619.  
  620. Note for people who want some very special c2p :
  621.  
  622. - Fixed for certain resolutions : let it fail for all other
  623.   resolutions with #c2p_err_internal and write a note to
  624.   CI_Description.
  625.  
  626. - Scrambled c2p *and* Normal c2p : You have to make two files
  627.   out of it. This standard can't handle both of them in one file.
  628.  
  629. - Vertical doubled pixels : Write a sublibrary that bases on
  630.   hardware banging displays and uses vertical doubled pixels,
  631.   using "Pseudo Screenmodes". Sorry, up to now, no other solutions.
  632.   Maybe later... :)
  633.  
  634. ----------------------------------------------------------------------------------------------
  635.  
  636. 9. History
  637. ==========
  638.  
  639. 1.0 First version to be worth mentioned
  640. 1.1 Structures were rearranged a LOT...
  641. 1.2 Updated RtgScreenAMI and added some hints to 8.
  642. 1.3 Updated RtgScreenAMI + changed c2p_* values
  643. 1.4 Updated c2p_Info structure (replaced BOOL by BYTE)
  644. 1.5 Updated RtgScreenAMI + Bugfix in description of Initialization
  645.     (stuff has to be saved in c2pdata, NOT in c2pcode...
  646.     Errorcodes in Initialization/Expunge fixed)
  647. 1.6 Added CI_Fixed for Fixed Screenmode c2p.
  648. 1.7 Added CI_Destruct
  649. 1.8 Added ECS compatibility note at the CI_Colordepth
  650.     section (normally rtgmaster.library has automatic
  651.     ECS Support... as long as no special AGA features
  652.     asides from colordepth are used for the c2p, that
  653.     is...)
  654.